<!DOCTYPE html>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->


<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <script src="lib/simpleRequire.js"></script>
        <script src="lib/config.js"></script>
        <script src="lib/jquery.min.js"></script>
        <script src="lib/facePrint.js"></script>
        <script src="lib/testHelper.js"></script>
        <!-- <script src="ut/lib/canteen.js"></script> -->
        <link rel="stylesheet" href="lib/reset.css" />
    </head>
    <body>
        <style>
        </style>



        <div id="main0"></div>
        <div id="main1"></div>
        <div id="main2"></div>
        <div id="main3"></div>









        <script>
        require(['echarts'/*, 'map/js/china' */], function (echarts) {
            var option;
            var colorList = [{
                type: 'linear',
                x: 0,
                y: 0,
                x2: 1,
                y2: 1,
                colorStops: [{
                        offset: 0,
                        color: 'rgba(51,192,205,0.01)' // 0% 处的颜色
                    },
                    {
                        offset: 1,
                        color: 'rgba(51,192,205,0.57)' // 100% 处的颜色
                    }
                ],
                globalCoord: false // 缺省为 false
            },
            {
                type: 'linear',
                x: 1,
                y: 0,
                x2: 0,
                y2: 1,
                colorStops: [{
                        offset: 0,
                        color: 'rgba(115,172,255,0.02)' // 0% 处的颜色
                    },
                    {
                        offset: 1,
                        color: 'rgba(115,172,255,0.67)' // 100% 处的颜色
                    }
                ],
                globalCoord: false // 缺省为 false
            },
            {
                type: 'linear',
                x: 1,
                y: 0,
                x2: 0,
                y2: 0,
                colorStops: [{
                        offset: 0,
                        color: 'rgba(158,135,255,0.02)' // 0% 处的颜色
                    },
                    {
                        offset: 1,
                        color: 'rgba(158,135,255,0.57)' // 100% 处的颜色
                    }
                ],
                globalCoord: false // 缺省为 false
            },
            {
                type: 'linear',
                x: 0,
                y: 1,
                x2: 0,
                y2: 0,
                colorStops: [{
                        offset: 0,
                        color: 'rgba(252,75,75,0.01)' // 0% 处的颜色
                    },
                    {
                        offset: 1,
                        color: 'rgba(252,75,75,0.57)' // 100% 处的颜色
                    }
                ],
                globalCoord: false // 缺省为 false
            },
            {
                type: 'linear',
                x: 1,
                y: 1,
                x2: 1,
                y2: 0,
                colorStops: [{
                        offset: 0,
                        color: 'rgba(253,138,106,0.01)' // 0% 处的颜色
                    },
                    {
                        offset: 1,
                        color: '#FDB36ac2' // 100% 处的颜色
                    }
                ],
                globalCoord: false // 缺省为 false
            },
            {
                type: 'linear',
                x: 0,
                y: 0,
                x2: 1,
                y2: 0,
                colorStops: [{
                        offset: 0,
                        color: 'rgba(254,206,67,0.12)' // 0% 处的颜色
                    },
                    {
                        offset: 1,
                        color: '#FECE4391' // 100% 处的颜色
                    }
                ],
                globalCoord: false // 缺省为 false
            }
        ]
        var colorLine = ['#33C0CD', '#73ACFF', '#9E87FF', '#FE6969', '#FDB36A', '#FECE43']

        function getRich() {
            let result = {}
            colorLine.forEach((v, i) => {
                result[`hr${i}`] = {
                    backgroundColor: colorLine[i],
                    borderRadius: 3,
                    width: 3,
                    height: 3,
                    padding: [0, 3, 3, -12]
                }
                result[`a${i}`] = {
                    padding: [-20, -60, 0, -20],
                    color: colorLine[i],
                    fontSize: 12
                }
            })
            return result
        }
        let data = [{
            'name': '北京',
            'value': 25
        }, {
            'name': '上海',
            'value': 20
        }, {
            'name': '广州',
            'value': 18
        }, {
            'name': '深圳',
            'value': 15
        }, {
            'name': '未知',
            'value': 13
        }, {
            'name': '海外',
            'value': 9
        }].sort((a, b) => {
            return b.value - a.value
        })
        data.forEach((v, i) => {
            v.labelLine = {
                lineStyle: {
                    width: 1,
                    color: colorLine[i]
                }
            }
        })
        option = {
            series: [{
                type: 'pie',
                radius: '60%',
                center: ['50%', '50%'],
                clockwise: true,
                avoidLabelOverlap: true,
                label: {
                    show: true,
                    position: 'outside',
                    formatter: function(params) {
                        const name = params.name
                        const percent = params.percent + '%'
                        const index = params.dataIndex
                        return [`{a${index}|${name}：${percent}}`, `{hr${index}|}`].join('\n')
                    },
                    rich: getRich()
                },
                itemStyle: {
                    normal: {
                        color: function(params) {
                            return colorList[params.dataIndex]
                        }
                    }
                },
                data,
                roseType: 'radius'
            }]
        }

            var chart = testHelper.create(echarts, 'main0', {
                title: [
                    'Test Case from https://gallery.echartsjs.com/editor.html?c=xgnWZ8Z9lI'
                ],
                option: option
                // height: 300,
                // buttons: [{text: 'btn-txt', onclick: function () {}}],
                // recordCanvas: true,
            });
        });
        </script>








        <script>
        require(['echarts'/*, 'map/js/china' */], function (echarts) {
            var option;

            var data = [{
                    value: 33310.12,
                    name: '邮件营销'
                },
                {
                    value: 234.88,
                    name: '联盟广告'
                },
                {
                    value: 13544444.44,
                    name: '视频广告'
                },
                {
                    value: 1.00,
                    name: '搜索引擎'
                },
                {
                    value: 310.12,
                    name: '测试文案1'
                },
                {
                    value: 234.33,
                    name: '测试文案2'
                },
                {
                    value: 135.55,
                    name: '测试文案3'
                },
                {
                    value: 1548,
                    name: '测试文案文字超多'
                }
            ];
            var color = ['#000000', '#dedede', '#343434', '#dfdfdf', ];
            option = {
                // title: {
                //     text: '饼图标签两端对称效果',
                //     subtext: '关键词: [饼图][环形图][引导线距离饼距离][label两端对称][label距离引导线距离]',
                //     x: 'center'
                // },
                series: [
                    // // 这个pie用于形成引导线和饼图间距
                    {
                        type: 'pie',
                        radius: ['40%', '55%'],
                        minAngle: 90,
                        label: {
                            normal: {
                                show: false,
                            }
                        },
                        data: data,
                    },
                    {
                        name: '访问来源',
                        type: 'pie',
                        minAngle: 90, // label最小扇区大小
                        label: {
                            normal: {
                                alignTo: 'edge', // label两端对称布局
                                //  ECharts v4.6.0 版本起，提供了 'labelLine' 与 'edge' 两种新的布局方式
                                margin: 90, // 布局为两端对称时候需要外边距防止图表变形 数值随意不要太大
                                distanceToLabelLine: 0, // label距离引导线距离
                                formatter: function(param) {
                                    return '{a|' + param.name + '}\n{hr|}\n' + '{d|' + param.value + '}';
                                },
                                opacity: 1,
                                backgroundColor: 'rgba(255, 0, 0, 0.2)',
                                rich: {
                                    a: {
                                        padding: [0, 10, 4, 10],  // 4边距是文字和hr间距，此处的边距10用于解决label和引导线有间距问题
                                        color: 'blue'
                                    },
                                    d: {
                                        padding: [4, 10, 0, 10],
                                        color: 'purple'
                                    },
                                    hr: {
                                        borderWidth: 1,
                                        width: '100%',
                                        height: 0,
                                        borderColor: 'blue'
                                    }
                                }
                            },
                        },
                        labelLine: {
                            lineStyle: {
                                color: 'blue'
                            }
                        },
                        itemStyle: {
                            opacity: 0
                        },
                        radius: ['40%', '60%'],
                        data: data,
                    }
                ]
            };
            var chart = testHelper.create(echarts, 'main1', {
                title: [
                    'Test Case from https://gallery.echartsjs.com/editor.html?c=x1TVKFGtZ1'
                ],
                option: option
                // height: 300,
                // buttons: [{text: 'btn-txt', onclick: function () {}}],
                // recordCanvas: true,
            });
        });
        </script>



        <script>
            require(['echarts'/*, 'map/js/china' */], function (echarts) {
                var option;

                var seriesData = [{
                    name: "大白",
                    value: "40000"
                }, {
                    name: "长大",
                    value: "53000"
                }, {
                    name: "杜洛克",
                    value: "40000"
                }, {
                    name: "约克猪",
                    value: "10000"
                }, {
                    name: "二元",
                    value: "40000"
                }, {
                    name: "三元",
                    value: "60000"
                }, {
                    name: "大长",
                    value: "10000"
                }, {
                    name: "PIC",
                    value: "20000"
                }];
                var legendData1 = ["大白", "长大", "杜洛克", "约克猪"]
                var legendData2 = ["二元", "三元", "大长","PIC"]
                var colorList = ['#0066FF', '#2E2EE6', '#4400CC', '#00AACC', '#9BBF30', '#E60000', '#92368D', '#BF9926'];
                option = {
                    backgroundColor: {
                        type: 'linear',
                        x: 0,
                        y: 0,
                        x2: 1,
                        y2: 1,
                        colorStops: [{
                            offset: 0,
                            color: '#000F44' // 0% 处的颜色
                        }, {
                            offset: 1,
                            color: '#000B3B' // 100% 处的颜色
                        }],
                        globalCoord: false // 缺省为 false
                    },
                    // title: {
                    //     text: '品种',
                    //     x: '56%',
                    //     y: 'center',
                    //     textStyle: {
                    //         fontSize:40,
                    //         color: '#fff'
                    //     }
                    // },
                    tooltip: {
                        trigger: 'item',
                        borderColor: 'rgba(255,255,255,.3)',
                        backgroundColor: 'rgba(13,5,30,.6)',
                        borderWidth: 1,
                        padding: 5,
                        formatter: function(parms) {
                            var str = parms.marker + "" + parms.data.name + "</br>" +
                                "数量：" + parms.data.value + "头</br>" +
                                "占比：" + parms.percent + "%";
                            return str;
                        }
                    },
                    legend: [{
                        type: "scroll",
                        orient: 'vertical',
                        icon:'square',
                        left: '8%',
                        align: 'left',
                        top: 'center',
                        itemGap: 20,
                        // bottom:'50%',
                        textStyle: {
                            fontSize:14,
                            color: '#AAAAAA'
                        },
                        data: legendData1
                    }, {
                        type: "scroll",
                        orient: 'vertical',
                        icon:'square',
                        left: '18%',
                        align: 'left',
                        top: 'center',
                        itemGap: 20,
                        // bottom:'50%',
                        textStyle: {
                            fontSize:14,
                            color: '#AAAAAA'
                        },
                        data: legendData2
                    }],
                    series: [{
                        type: 'pie',
                        z: 3,
                        center: ['62%', '50%'],
                        radius: ['25%', '37%'],
                        clockwise: true,
                        avoidLabelOverlap: true,
                        hoverOffset: 15,
                        itemStyle: {
                            normal: {
                                color: function(params) {
                                    return colorList[params.dataIndex]
                                }
                            }
                        },
                        label: {
                            show: true,
                            position: 'outside',
                            formatter: '{a|{b}：{d}%}\n{hr|}',
                            rich: {
                                // hr: {
                                //     backgroundColor: 't',
                                //     borderRadius: 3,
                                //     width: 3,
                                //     height: 3,
                                //     padding: [3, 3, 0, -12]
                                // },
                                a: {
                                    color:'#fff',
                                    padding: [0, -80, 20, -80]
                                }
                            }
                        },
                        labelLine: {
                            normal: {
                                length: 40,
                                length2: 90,
                                lineStyle: {
                                    width: 1
                                }
                            }
                        },
                        data: seriesData
                    }, {
                        name:'第一层环',
                        type: 'pie',
                        z: 2,
                        tooltip:{
                            show:false
                        },
                        center: ['62%', '50%'],
                        radius: ['37%', '47%'],
                        hoverAnimation: false,
                        clockWise: false,
                        itemStyle: {
                            normal: {
                                // shadowBlur: 40,
                                // shadowColor: 'rgba(0, 255, 255,.3)',
                                color: 'rgba(1,15,80,.9)',
                            },
                            emphasis:{
                                color: 'rgba(1,15,80,.9)',
                            }
                        },
                        label: {
                            show: false
                        },
                        data: [100]
                    }, {
                        name:'第二层环',
                        type: 'pie',
                        z: 1,
                        tooltip:{
                            show:false
                        },
                        center: ['62%', '50%'],
                        radius: ['47%', '62%'],
                        hoverAnimation: false,
                        clockWise: false,
                        itemStyle: {
                            normal: {
                                // shadowBlur: 40,
                                // shadowColor: 'rgba(0, 255, 255,.3)',
                                color: 'rgba(0,15,69,.8)',
                            },
                            emphasis:{
                                color: 'rgba(0,15,69,.8)',
                            }
                        },
                        label: {
                            show: false
                        },
                        data: [100]
                    }]
                };
                var chart = testHelper.create(echarts, 'main2', {
                    title: [
                        'Test Case from https://gallery.echartsjs.com/editor.html?c=xD3PY0UKmS'
                    ],
                    option: option
                    // height: 300,
                    // buttons: [{text: 'btn-txt', onclick: function () {}}],
                    // recordCanvas: true,
                });
            });
        </script>

        <script>
            require(['echarts'], function (echarts) {
                var option;

                let dashedPic = '';
                let color = ['#FF8700', '#ffc300', '#00e473', '#009DFF'];
                let chartData = [{
                        name: "本科及以上",
                        value: 13211,
                        unit: '元'
                    },
                    {
                        name: "高中",
                        value: 42111,
                        unit: '元'
                    },
                    {
                        name: "初中及以下",
                        value: 81711,
                        unit: '元'
                    },
                    {
                        name: "其他",
                        value: 121711,
                        unit: '元'
                    }
                ];
                let arrName = [];
                let arrValue = [];
                let sum = 0;
                let pieSeries = [],
                    lineYAxis = [];

                // 数据处理
                chartData.forEach((v, i) => {
                    arrName.push(v.name);
                    arrValue.push(v.value);
                    sum = sum + v.value;
                })

                // 图表option整理
                chartData.forEach((v, i) => {
                    pieSeries.push({
                        name: '学历',
                        type: 'pie',
                        clockWise: false,
                        hoverAnimation: false,
                        radius: [65 - i * 15 + '%', 57 - i * 15 + '%'],
                        center: ["30%", "50%"],
                        label: {
                            show: false
                        },
                        data: [{
                            value: v.value,
                            name: v.name
                        }, {
                            value: sum - v.value,
                            name: '',
                            itemStyle: {
                                color: "rgba(0,0,0,0)"
                            }
                        }]
                    });
                    pieSeries.push({
                        name: '',
                        type: 'pie',
                        silent: true,
                        z: 1,
                        clockWise: false, //顺时加载
                        hoverAnimation: false, //鼠标移入变大
                        radius: [65 - i * 15 + '%',57 - i * 15 + '%'],
                        center: ["30%", "50%"],
                        label: {
                            show: false
                        },
                        data: [{
                            value: 7.5,
                            itemStyle: {
                                color: "#E3F0FF"
                            }
                        }, {
                            value: 2.5,
                            name: '',
                            itemStyle: {
                                color: "rgba(0,0,0,0)"
                            }
                        }]
                    });
                    v.percent = (v.value / sum * 100).toFixed(1) + "%";
                    lineYAxis.push({
                        value: i,
                        textStyle: {
                            rich: {
                                circle: {
                                    color: color[i],
                                    padding: [0, 5]
                                }
                            }
                        }
                    });
                })

                option = {
                    backgroundColor: '#fff',
                    color: color,
                    grid: {
                        top: '15%',
                        bottom: '54%',
                        left: "30%",
                        containLabel: false
                    },
                    yAxis: [{
                        type: 'category',
                        inverse: true,
                        axisLine: {
                            show: false
                        },
                        axisTick: {
                            show: false
                        },
                        axisLabel: {
                            formatter: function(params) {
                                let item = chartData[params];
                                console.log(item)
                                return '{line|}{circle|●}{name|'+ item.name +'}{bd||}{percent|'+item.percent+'}{value|'+ item.value+'}{unit|元}'
                            },
                            interval: 0,
                            inside: true,
                            textStyle: {
                                color: "#333",
                                fontSize: 14,
                                rich: {
                                    line: {
                                        width: 170,
                                        height: 10,
                                        backgroundColor: {image: dashedPic}
                                    },
                                    name: {
                                        color: '#666',
                                        fontSize: 14,
                                    },
                                    bd: {
                                        color: '#ccc',
                                        padding: [0, 5],
                                        fontSize: 14,
                                    },
                                    percent:{
                                        color: '#333',
                                        fontSize: 14,
                                    },
                                    value: {
                                        color: '#333',
                                        fontSize: 16,
                                        fontWeight: 500,
                                        padding: [0, 0, 0, 20]
                                    },
                                    unit: {
                                        fontSize: 14
                                    }
                                }
                            },
                            show: true
                        },
                        data: lineYAxis
                    }],
                    xAxis: [{
                        show: false
                    }],
                    series: pieSeries
                };
                var chart = testHelper.create(echarts, 'main3', {
                    title: [
                        'Test Case from https://gallery.echartsjs.com/editor.html?c=xF_AXrV7sK'
                    ],
                    option: option
                    // height: 300,
                    // buttons: [{text: 'btn-txt', onclick: function () {}}],
                    // recordCanvas: true,
                });
            });
        </script>
    </body>
</html>

